#pragma once
#include <comutil.h>
class IVarListVisitor;
class IVarListUpdater;

class CVarListImp
{
public:
	CVarListImp(void);
	~CVarListImp(void);

	template<typename T>
	void SetValue(UINT idx, const T& value)
	{
		m_varMap[idx] = value;
	}

	template<typename T>
	bool GetValue(UINT idx, T& value) const
	{
		_variant_t _value;
		if(m_varMap.Lookup(idx, _value))
		{
			value = _value;
			return true;
		}

		return false;
	}
	void VisitItems(IVarListVisitor& visit) const;
	void UpdateItems(IVarListUpdater& updater);
	//bool GetValue(UINT idx, _variant_t& value) const
	//{
	//	if(m_varMap.Lookup(idx, value))
	//		return true;

	//	return false;
	//}
private:
	CMap<UINT, UINT, _variant_t, _variant_t&> m_varMap;
};
